package ca.qc.bdeb.jeuxdesboites.model;

import ca.qc.bdeb.jeuxdesboites.commun.Coup;
import ca.qc.bdeb.utilitaires.Direction;
import ca.qc.bdeb.jeuxdesboites.commun.IDJoueurs;
import java.io.InputStream;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static org.junit.Assert.*;


/**
 *
 * @author Eric Wenaas <eric.wenaas@bdeb.qc.ca>
 */
public class JoueurArtificielTestUtils {
    
        private static final Pattern patronCoup = Pattern.compile("(\\w+): X: (\\d+) Y: (\\d+) Direction: (\\w+)");

    static void jouerCoups(TableauJeu tableau, String resource) {
        ClassLoader theClassLoader = JoueurArtificielTestUtils.class.getClassLoader();
        InputStream stream = theClassLoader.getResourceAsStream(resource);
        Scanner lecteur = new Scanner(stream);
        while (lecteur.hasNext()) {
            String ligne = lecteur.nextLine();
            Matcher match = patronCoup.matcher(ligne);
            if (match.matches()) {
                IDJoueurs joueur = IDJoueurs.valueOf(match.group(1));
                int x = Integer.valueOf(match.group(2));
                int y = Integer.valueOf(match.group(3));
                Direction d = Direction.valueOf(match.group(4));
                tableau.jouerCoup(joueur, new Coup(x, y, d));
//                System.out.println(new Coup(x, y, d).toString());
//                tableau.afficher(System.out);
            }
        }
        lecteur.close();
    }
    
    static void assertAbsentListe(List<Coup> coups, List<Coup> candidats) {
        for (Coup coupEvalue: coups) {
            assertFalse(candidats.contains(coupEvalue));
        }
    }
}
